package com.wisezone.workflow.core;

import com.wisezone.workflow.dao.WfActivityDao;
import com.wisezone.workflow.dao.WfActivityInstUserDao;
import com.wisezone.workflow.dao.WfActivityInstanceDao;
import com.wisezone.workflow.dao.WfDataDictionaryDao;
import com.wisezone.workflow.dao.WfLinkDao;
import com.wisezone.workflow.dao.WfProcessDefinitionDao;
import com.wisezone.workflow.dao.WfProcessInstanceDao;
import com.wisezone.workflow.dao.WfVariableDao;
import com.wisezone.workflow.dao.WfVariableInstanceDao;
import com.wisezone.workflow.exception.WfCoreException;


/**
 * 流程基础类
 * @author tss 2009-09-05
 *
 */
public interface BaseProperty  {

	//数据字典状态 start
	public static final String PROCESS_INST_STATE = "processInstanceState";  //流程实例状态
	
	public static final String ACTIVITY_INST_STATE = "activityInstanceState";  //活动实例状态
	
	public static final String ACTIVITY_CATEGORY = "activityCategory";  //节点类别
	
	public static final String TASK_CATEGORY = "taskCategory";  //任务类型
	//数据字典状态 end
	
	public static final String  NEXT_LINK_ID = "1";  //下一个连接Id
	
	public static final String  ACTOR_IDS = "2";   //操作用户ids
	
	public static final String ACTOR_GROUP_IDS = "3";  //操作用户组Ids
	
	public static final String  NEXT_ACTIVITY_ID = "4";  //下一个活动Id
	
	public static final String  STATE_CREATE = "create";
	
	public static final String  STATE_END = "end";
	
	public static final String  PROCESS_INST_START = "0";
	
	public static final String  PROCESS_INST_END = "1";
	
	public static final String PROCESS_INST_PAUSE = "2";
	
	public static final String  ACTIVITY_INST_NOT_START = "0";  //未开始
	
	public static final String  ACTIVITY_INST_END = "1";   //结束
	
	public static final String  ACTIVITY_INST_START = "2";  //已开始
	
	//活动类型
	public static final String  ACTIVITY_START = "start";  //开始
	
	public static final String  ACTIVITY_DRAFT = "draft";  //起草
	
	public static final String  ACTIVITY_END = "end";   //结束
	
	public static final String  ACTIVITY_COMMON = "common";  //普通
	
	public static final String  ACTIVITY_FORK = "fork";  //分支
	
	public static final String  ACTIVITY_JOIN = "join";   //合并
	
	public static final String  ACTIVITY_DECISION = "decision";  //决策
	
	public static final String  ACTIVITY_EMAIL = "email";   //邮件
	
	public static final String  ACTIVITY_MSG = "msg";   //消息
	
	public static final String  ACTIVITY_TIMER = "timer";   //定时器
	
	
	//任务类型
	public static final String  TASK_SHARE = "share";  //共享
	
	public static final String  TASK_CONC = "conc";  //并发
	
	
	//模板系统变量
	public static final String ACTOR = "actor";  //活动参与者
	
	public static final String ACTOR_GROUP = "actorGroup";  //活动参与者组
	
	public static final String CONN_PASS_NUM = "passNum";  //活动通过的人数
	
	public static final String CONN_IS_PASS = "isPass";  //并发是否通过
	
	public static final String NODE_EXEC_TIMER = "nodeExecTime";  //节点执行时间（节点运行的时间）
	
	public static final String TIMER_PERIOD = "timerPeriod";  //运行时间间隔
	
	//java 类 执行 方法
	public static final String CLASS_NAME = "className";  //类名称
	
	public static final String BEAN_NAME = "beanName";  //spring beanName
	
	public static final String CREATE_TYPE = "createType";  //创建方式
	
	public static final String CREATE_TYPE_JAVA = "java";  //创建方式java
	
	public static final String CREATE_TYPE_SRPING = "spring";  //创建方式spring
	
	//邮件变量
	public static final String SEND_TYPE = "sendType";  //发送方式
	
	public static final String SEND_TYPE_SIMPLE = "simple";  //简单
	
	public static final String SEND_TYPE_MIME = "mime";  //扩展
	
	public static final String MAIL_SUBJECT = "subject";  //主题
	
	public static final String MAIL_CONTENT = "content";  //内容
	
	public static final String MAIL_TO = "to";  //收件人地址
	
	public static final String MAIL_ATT = "mailAtt";  //邮件附件
	
	
	
	
//	public static final String CATEGORY_USER = "category_user";  //用户类型
//	
//	public static final String CATEGORY_ROLE = "category_role";  //角色或用户组类型
	
	
   //	
	
	
	
	
	/**
	 * 获得流程实例状态ID
	 * @param code
	 * @return
	 * @throws WfCoreException
	 */
	public Long getProcessInstState(String code) throws WfCoreException;
	
	/**
	 * 获得活动实例状态ID
	 * @param code
	 * @return
	 * @throws WfCoreException
	 */
	public Long getActivityInstState(String code) throws WfCoreException;
	
	/**
	 * 获得活动类别ID
	 * @param code
	 * @return
	 * @throws WfCoreException
	 */
	public Long getActivityCategory(String code) throws WfCoreException;
	
	/**
	 * 获得任务类型
	 * @param code
	 * @return
	 * @throws WfCoreException
	 */
	public Long getTaskCategory(String code) throws WfCoreException;
	
	public WfProcessDefinitionDao getWfProcessDefinitionDao() ;


	public void setWfProcessDefinitionDao(
			WfProcessDefinitionDao wfProcessDefinitionDao) ;


	public WfProcessInstanceDao getWfProcessInstanceDao() ;


	public void setWfProcessInstanceDao(WfProcessInstanceDao wfProcessInstanceDao) ;


	public WfActivityDao getWfActivityDao() ;


	public void setWfActivityDao(WfActivityDao wfActivityDao) ;


	public WfActivityInstanceDao getWfActivityInstanceDao() ;


	public void setWfActivityInstanceDao(WfActivityInstanceDao wfActivityInstanceDao);


	public WfLinkDao getWfLinkDao();


	public void setWfLinkDao(WfLinkDao wfLinkDao);


	public WfVariableDao getWfVariableDao() ;


	public void setWfVariableDao(WfVariableDao wfVariableDao) ;


	public WfDataDictionaryDao getWfDataDictionaryDao() ;


	public void setWfDataDictionaryDao(WfDataDictionaryDao wfDataDictionaryDao) ;


	public WfActivityInstUserDao getWfActivityInstUserDao();


	public void setWfActivityInstUserDao(WfActivityInstUserDao wfActivityInstUserDao) ;
	
	public WfVariableInstanceDao getWfVariableInstanceDao();

	public void setWfVariableInstanceDao(WfVariableInstanceDao wfVariableInstanceDao) ;

	
    	
}
